{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在这个教程中，你将会学到如何用高德地图api抓取行政区划\n",
    "\n",
    "<div class=\"alert alert-info\"><h2>提供的基础数据是：</h2><p>\n",
    "    没有，我们的数据无中生有<br><br></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 观察网络连接行为"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们从高德地图抓，先观察一下如果在高德地图输入深圳的某一个行政区划查询，它的网络连接行为是怎样的\n",
    "    \n",
    "谷歌浏览器右键检查，或者点设置里面的开发者工具，再点network选项，可以看到网络的连接行为（其他浏览器也有类似的功能，需要找一找）\n",
    "\n",
    "<a href=\"https://mp.weixin.qq.com/s/97xjbnYBf_y49GF1SUNl-w\">爬虫的原理在这里</a>我们这里用到的是爬虫2.0\n",
    "\n",
    "每个网络访问中，有\n",
    "\n",
    "    Response Headers(响应头)\n",
    "    Request Headers(请求头)\n",
    "    Query String Parameters(查询参数)\n",
    "    \n",
    "其中，请求头和查询参数是我们要关注的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# json数据格式"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在网络访问行为中，对方服务器返回给我们的数据是json结构，那么json是什么呢"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "先补充一下基础知识，学习一下python的\n",
    "\n",
    "<a href=\"https://www.runoob.com/python/python-lists.html\">list</a>\n",
    "\n",
    "<a href=\"https://www.runoob.com/python/python-dictionary.html\">dict</a>\n",
    "\n",
    "<a href=\"https://www.runoob.com/python/python-tuples.html\">tuple</a>\n",
    "\n",
    "把list,dict,tuple自由组合起来就变成了json\n",
    "\n",
    "<a href=\"https://www.runoob.com/json/json-tutorial.html\">JSON 实例</a>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "直接从高德地图抓是比较困难的，有防爬机制\n",
    "\n",
    "不过，高德专门为开发者提供了抓数据的接口\n",
    "\n",
    "<a href=\"https://lbs.amap.com/\">高德地图开放平台</a>\n",
    "\n",
    "各位需要注册一下高德开发者申请一个key"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在其中，高德已经给我们提供了开发者专用的行政区查询服务，以及相关说明<a href=\"https://lbs.amap.com/api/javascript-api/guide/services/district-search\">行政区查询</a>\n",
    "\n",
    "在其中选择一个行政区查询，然后看看网络连接行为吧"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 开始抓行政区划"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-01-19T03:44:12.354768Z",
     "start_time": "2020-01-19T03:44:11.803160Z"
    }
   },
   "outputs": [],
   "source": [
    "#导入必要的爬虫包\n",
    "import urllib\n",
    "from urllib import parse\n",
    "from urllib import request\n",
    "\n",
    "import pandas as pd\n",
    "#导入json包，后面解析json数据\n",
    "import json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-01-19T03:44:13.091717Z",
     "start_time": "2020-01-19T03:44:13.086729Z"
    }
   },
   "outputs": [],
   "source": [
    "mykey = '在此输入你的key'\n",
    "#这个输入你开发者key，告诉高德这个数据是你抓的，每天会有限额，你们可以注册成为开发者，这样就有自己的key拉"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-01-19T03:44:16.032917Z",
     "start_time": "2020-01-19T03:44:14.094053Z"
    }
   },
   "outputs": [],
   "source": [
    "keywords = '罗湖区'\n",
    "\n",
    "#查询的接口地址\n",
    "url = 'https://restapi.amap.com/v3/config/district?'\n",
    "\n",
    "#查询的条件\n",
    "dict1 = {\n",
    "'subdistrict':'3',\n",
    "    'showbiz':'false',\n",
    "    'extensions':'all',\n",
    "    'key':mykey,#这个是我的开发者key，告诉高德这个数据是我抓的，每天会有限额，你们可以注册成为开发者，这样就有自己的key拉\n",
    "    's':'rsv3',\n",
    "    'output':'json',\n",
    "    'level':'district',\n",
    "    'keywords':keywords,\n",
    "    'platform':'JS',\n",
    "    'logversion':'2.0',\n",
    "    'sdkversion':'1.4.10'\n",
    "}\n",
    "\n",
    "#把查询条件组合成网页地址\n",
    "url_data = parse.urlencode(dict1)\n",
    "url = url+url_data\n",
    "\n",
    "#创建一个访问器\n",
    "request = urllib.request.Request(url)\n",
    "\n",
    "#访问网页\n",
    "response = urllib.request.urlopen(request)\n",
    "\n",
    "#读取网页内容\n",
    "webpage = response.read()\n",
    "\n",
    "#将内容用json解析\n",
    "result = json.loads(webpage.decode('utf8','ignore'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-01-19T03:44:17.628606Z",
     "start_time": "2020-01-19T03:44:17.611648Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'status': '1',\n",
       " 'info': 'OK',\n",
       " 'infocode': '10000',\n",
       " 'count': '1',\n",
       " 'suggestion': {'keywords': [], 'cities': []},\n",
       " 'districts': [{'citycode': '0755',\n",
       "   'adcode': '440303',\n",
       "   'name': '罗湖区',\n",
       "   'polyline': '114.105177,22.531626;114.104808,22.532512;114.104774,22.535038;114.104757,22.535105;114.104772,22.5352;114.104764,22.535834;114.104699,22.540773;114.104687,22.541316;114.104589,22.546031;114.104519,22.547975;114.104464,22.548114;114.104502,22.548445;114.104486,22.548663;114.10449,22.548786;114.104477,22.549163;114.104506,22.549251;114.104505,22.549327;114.10447,22.549363;114.104341,22.552936;114.104281,22.555434;114.104472,22.555779;114.104487,22.555809;114.104508,22.555845;114.104557,22.555933;114.104576,22.556013;114.104576,22.556037;114.104574,22.556168;114.10456,22.556475;114.10456,22.556561;114.104559,22.556903;114.104552,22.557291;114.104551,22.557399;114.104547,22.557726;114.104541,22.557852;114.104542,22.558166;114.104536,22.558579;114.104534,22.558701;114.104529,22.559019;114.104521,22.559395;114.104523,22.559815;114.104503,22.560243;114.104498,22.560353;114.104502,22.560685;114.104495,22.561075;114.104487,22.561174;114.104496,22.561506;114.104496,22.561921;114.104496,22.562368;114.104502,22.562489;114.104504,22.562812;114.104506,22.563216;114.104504,22.563617;114.104508,22.563748;114.104512,22.564046;114.104508,22.56422;114.104498,22.564475;114.104502,22.564899;114.104511,22.565285;114.104509,22.565474;114.104508,22.565722;114.104517,22.56614;114.104521,22.566593;114.104523,22.567017;114.104518,22.567455;114.104524,22.567872;114.104514,22.56789;114.104473,22.567887;114.104281,22.56785;114.104165,22.567827;114.104041,22.567776;114.103984,22.567714;114.103221,22.566996;114.101604,22.566261;114.100625,22.565896;114.099474,22.565566;114.098216,22.565256;114.096829,22.56491;114.095665,22.564683;114.094653,22.564538;114.093662,22.564387;114.09319,22.564326;114.092677,22.564341;114.092628,22.564336;114.092616,22.564338;114.092547,22.564334;114.092482,22.564333;114.092448,22.564344;114.092346,22.564394;114.092238,22.564462;114.092232,22.564471;114.092198,22.564515;114.092159,22.564576;114.092053,22.564749;114.091951,22.564934;114.091793,22.565191;114.091604,22.565503;114.091404,22.565793;114.09114,22.566201;114.091064,22.566319;114.090868,22.566609;114.090934,22.56668;114.090822,22.566674;114.090558,22.567061;114.090367,22.567349;114.090287,22.567475;114.090217,22.567571;114.090162,22.567638;114.08992,22.56787;114.089529,22.568249;114.089399,22.56837;114.089068,22.568689;114.088819,22.568935;114.088709,22.569037;114.088646,22.569078;114.088535,22.569171;114.088247,22.569416;114.088167,22.569495;114.088081,22.569532;114.08804,22.569578;114.087999,22.569556;114.087781,22.569619;114.087106,22.56982;114.086649,22.569956;114.08641,22.570031;114.086242,22.570088;114.086163,22.570103;114.085801,22.570148;114.085672,22.570161;114.085463,22.570188;114.085116,22.570236;114.084791,22.570277;114.084619,22.570303;114.084456,22.570309;114.084331,22.570304;114.084081,22.570304;114.083769,22.570298;114.083665,22.570292;114.083473,22.570284;114.083275,22.570264;114.083075,22.570242;114.082817,22.57021;114.082622,22.570188;114.082508,22.570159;114.08228,22.570096;114.082174,22.570069;114.081817,22.569965;114.081591,22.569903;114.081421,22.569841;114.081242,22.569769;114.080933,22.569619;114.080908,22.569568;114.08085,22.569578;114.080686,22.569497;114.080538,22.569445;114.080433,22.569393;114.080271,22.569293;114.079923,22.569056;114.079662,22.568882;114.079393,22.568705;114.079153,22.568538;114.079117,22.568517;114.079096,22.568519;114.079028,22.568567;114.078887,22.568673;114.078607,22.56885;114.078495,22.568924;114.078397,22.569016;114.078186,22.569219;114.078015,22.56938;114.077965,22.569438;114.077919,22.569561;114.077803,22.569836;114.077751,22.569966;114.077635,22.570266;114.077564,22.57047;114.077481,22.570689;114.077396,22.570895;114.077328,22.571063;114.077286,22.571168;114.077251,22.571219;114.077139,22.571326;114.076993,22.571499;114.076867,22.571625;114.076762,22.571693;114.076688,22.571739;114.07653,22.571842;114.076423,22.571923;114.076276,22.572064;114.076119,22.57222;114.076027,22.572324;114.075995,22.572373;114.075944,22.572466;114.075442,22.573406;114.074444,22.57527;114.074429,22.575304;114.07442,22.575387;114.074413,22.57552;114.074422,22.575687;114.074425,22.575768;114.074436,22.575915;114.074424,22.576026;114.074396,22.576131;114.072941,22.578101;114.07282,22.578252;114.072721,22.578413;114.07264,22.578544;114.07255,22.578743;114.072494,22.578864;114.072333,22.579066;114.072248,22.579179;114.072132,22.579286;114.071922,22.57948;114.071765,22.579608;114.071509,22.579729;114.071414,22.579777;114.071316,22.579822;114.071183,22.579844;114.070814,22.579893;114.070644,22.579942;114.070522,22.579985;114.070441,22.580055;114.069304,22.580983;114.069009,22.581218;114.068689,22.582049;114.067464,22.583932;114.066593,22.585036;114.066307,22.585671;114.066242,22.586446;114.066427,22.587767;114.06676,22.587997;114.067792,22.58822;114.068388,22.589547;114.069677,22.590484;114.070446,22.591161;114.070783,22.591517;114.071592,22.592746;114.073605,22.592416;114.076291,22.594081;114.076481,22.594279;114.07644,22.594435;114.076425,22.59446;114.076405,22.594494;114.076384,22.594524;114.076365,22.59456;114.076341,22.594601;114.076325,22.594627;114.075951,22.595047;114.075364,22.596361;114.07531,22.596547;114.075214,22.597194;114.075216,22.597212;114.075242,22.597386;114.075331,22.598095;114.075334,22.598101;114.075369,22.59811;114.075417,22.598111;114.075471,22.598105;114.075523,22.598098;114.076329,22.597851;114.077292,22.598071;114.078856,22.599039;114.079411,22.599596;114.081164,22.600857;114.082876,22.601197;114.083804,22.601219;114.085266,22.600967;114.086078,22.600389;114.089056,22.599067;114.089668,22.598512;114.089843,22.598586;114.090674,22.599398;114.09147,22.599906;114.09222,22.600078;114.093411,22.600147;114.095172,22.598901;114.096739,22.597389;114.097775,22.596069;114.099539,22.594177;114.099735,22.593308;114.099939,22.593058;114.100366,22.592807;114.100931,22.5927;114.102247,22.592214;114.10306,22.591685;114.103222,22.591579;114.103542,22.591372;114.103553,22.591365;114.103704,22.591266;114.105077,22.590145;114.105741,22.589396;114.105881,22.588793;114.105994,22.588302;114.106724,22.588183;114.107486,22.588193;114.108022,22.589015;114.110447,22.589194;114.111385,22.589313;114.111392,22.589314;114.111561,22.589353;114.111573,22.589357;114.112218,22.589464;114.112519,22.589649;114.112562,22.589674;114.112689,22.589744;114.112708,22.589755;114.112738,22.589772;114.112766,22.589787;114.112811,22.589811;114.112879,22.589847;114.112937,22.589878;114.114131,22.590493;114.114778,22.590676;114.114877,22.590688;114.11497,22.5907;114.114983,22.590702;114.115069,22.590714;114.115508,22.590837;114.115691,22.590902;114.117447,22.591251;114.119557,22.589983;114.119849,22.590075;114.119948,22.590107;114.119978,22.590116;114.121215,22.590506;114.121722,22.590666;114.121915,22.589584;114.122051,22.589317;114.122192,22.589041;114.122209,22.589007;114.122662,22.588988;114.122856,22.588973;114.123263,22.588939;114.123467,22.588929;114.12343,22.588161;114.123462,22.587963;114.123564,22.587968;114.123719,22.58773;114.124542,22.588289;114.124796,22.588661;114.12493,22.588682;114.12602,22.588761;114.128704,22.588944;114.129348,22.588701;114.129869,22.588308;114.130275,22.587676;114.13049,22.587318;114.130822,22.586694;114.131852,22.587407;114.133097,22.588299;114.133204,22.588735;114.13388,22.589161;114.134236,22.588814;114.13528,22.588108;114.135606,22.588144;114.136787,22.588331;114.138444,22.58874;114.139069,22.588748;114.139319,22.589018;114.13979,22.590095;114.139994,22.590331;114.141456,22.591084;114.141934,22.591243;114.143284,22.591405;114.144299,22.591268;114.145053,22.591772;114.145693,22.592358;114.145957,22.592811;114.145959,22.593802;114.145958,22.593844;114.145945,22.594116;114.145873,22.594481;114.145823,22.594669;114.145768,22.594911;114.146004,22.595483;114.14601,22.595499;114.146049,22.595533;114.146147,22.595613;114.146251,22.595698;114.146363,22.595791;114.146399,22.595822;114.146478,22.59589;114.146597,22.595994;114.146624,22.596017;114.150262,22.599342;114.151339,22.600002;114.152247,22.600358;114.152438,22.600394;114.153528,22.600911;114.15425,22.601428;114.154631,22.601454;114.154747,22.60145;114.154824,22.601445;114.157929,22.601334;114.159134,22.601195;114.159579,22.601232;114.159944,22.601389;114.160279,22.601884;114.160886,22.603346;114.161572,22.604487;114.161638,22.605271;114.163465,22.606384;114.163541,22.60644;114.16362,22.606499;114.163696,22.606555;114.163752,22.606596;114.163782,22.606619;114.163815,22.606642;114.163908,22.606709;114.163972,22.606755;114.164414,22.607122;114.164561,22.607248;114.165302,22.607886;114.165449,22.608013;114.166038,22.608519;114.166184,22.608646;114.16693,22.609288;114.167471,22.609519;114.17063,22.610244;114.172673,22.610358;114.173934,22.610991;114.175158,22.61219;114.175914,22.613807;114.176014,22.614284;114.177174,22.615588;114.17745,22.615527;114.181628,22.61599;114.181786,22.615914;114.182252,22.615341;114.183195,22.614909;114.184766,22.615289;114.186902,22.61519;114.187,22.615187;114.187096,22.615183;114.187185,22.61518;114.187194,22.61518;114.188777,22.615241;114.19169,22.616084;114.192145,22.616449;114.192406,22.61619;114.196861,22.613296;114.199387,22.609757;114.199502,22.6096;114.199765,22.609247;114.199861,22.609124;114.199882,22.609093;114.200355,22.60774;114.200348,22.607492;114.200202,22.607034;114.199242,22.606371;114.198901,22.605669;114.198702,22.604842;114.198788,22.603977;114.198742,22.60325;114.198867,22.60304;114.200081,22.602383;114.201067,22.602186;114.202343,22.601505;114.203151,22.601184;114.204079,22.601417;114.205452,22.601953;114.206973,22.601653;114.207583,22.601157;114.208871,22.599357;114.209512,22.598772;114.210086,22.598889;114.211343,22.599338;114.212641,22.599632;114.213228,22.599614;114.213842,22.599288;114.214031,22.598876;114.214085,22.59829;114.213704,22.596583;114.213677,22.59607;114.215775,22.593767;114.216158,22.593137;114.216721,22.59246;114.217485,22.591033;114.217635,22.590298;114.217754,22.590079;114.218556,22.589512;114.219021,22.588915;114.219105,22.588596;114.219037,22.587972;114.219352,22.585877;114.219593,22.585003;114.219527,22.58458;114.218891,22.583076;114.218763,22.581919;114.218845,22.581043;114.218854,22.580966;114.218893,22.580599;114.218907,22.580476;114.218921,22.580341;114.218924,22.580327;114.218929,22.580289;114.21895,22.580217;114.219004,22.580125;114.219105,22.579931;114.219143,22.579845;114.219192,22.579787;114.219312,22.579625;114.219433,22.579473;114.219506,22.579339;114.219574,22.579246;114.219615,22.579142;114.219677,22.578972;114.219685,22.578909;114.21977,22.578649;114.219906,22.57831;114.21997,22.578174;114.220004,22.577996;114.220011,22.577863;114.220006,22.577782;114.219971,22.577686;114.219919,22.577606;114.219824,22.577488;114.219743,22.577401;114.219606,22.577311;114.219482,22.577216;114.219275,22.577084;114.219048,22.576943;114.21892,22.576857;114.218743,22.576737;114.218563,22.576617;114.2185,22.576548;114.218434,22.57645;114.21815,22.57608;114.217947,22.575801;114.217677,22.575486;114.217657,22.575451;114.217579,22.575333;114.217519,22.575269;114.217434,22.575164;114.217332,22.575083;114.217263,22.575032;114.217172,22.575006;114.215717,22.57436;114.215487,22.57425;114.215114,22.57412;114.214703,22.574005;114.214006,22.573861;114.213927,22.57386;114.213691,22.573858;114.213578,22.573868;114.213208,22.5739;114.213044,22.57392;114.212851,22.573924;114.212531,22.573916;114.21242,22.573912;114.212315,22.57389;114.21218,22.573881;114.212025,22.573863;114.211861,22.573843;114.211728,22.57382;114.211613,22.573798;114.211474,22.573757;114.21134,22.573722;114.21115,22.573678;114.210974,22.57363;114.210726,22.573565;114.210551,22.573517;114.210444,22.573486;114.210394,22.573447;114.210304,22.573396;114.208112,22.572756;114.208053,22.572771;114.208019,22.572761;114.20785,22.572709;114.207699,22.57265;114.207515,22.572575;114.207469,22.572541;114.207406,22.572495;114.20733,22.572442;114.207236,22.572363;114.207125,22.572287;114.206886,22.572112;114.20677,22.572024;114.206701,22.57196;114.206544,22.571811;114.206268,22.571552;114.206081,22.571364;114.205976,22.571265;114.205833,22.571132;114.205621,22.570991;114.205471,22.570898;114.205326,22.570794;114.205056,22.570621;114.204811,22.570497;114.204567,22.570372;114.204187,22.570192;114.203832,22.570001;114.203761,22.569949;114.203461,22.569306;114.203444,22.569249;114.203442,22.569179;114.203445,22.569021;114.203476,22.568839;114.203532,22.568614;114.203606,22.568371;114.203673,22.568165;114.203785,22.567846;114.203871,22.567678;114.20405,22.567334;114.204124,22.567195;114.204306,22.566849;114.204382,22.56671;114.204441,22.566591;114.204536,22.566448;114.204662,22.566261;114.204751,22.566134;114.204816,22.566015;114.204968,22.565799;114.205097,22.565611;114.205259,22.565368;114.205332,22.565266;114.205414,22.565138;114.205459,22.565042;114.205512,22.564925;114.205581,22.564764;114.205693,22.564543;114.205744,22.564435;114.205817,22.564258;114.205967,22.563971;114.206111,22.563694;114.206221,22.563493;114.206356,22.563258;114.206472,22.563041;114.206632,22.562762;114.206716,22.562605;114.20691,22.562277;114.206999,22.56212;114.207064,22.562024;114.207089,22.561944;114.20718,22.561643;114.207256,22.561409;114.20728,22.561283;114.207301,22.561166;114.207337,22.560946;114.207352,22.560862;114.207344,22.56079;114.207331,22.560682;114.207298,22.560464;114.207269,22.560333;114.207225,22.560206;114.207172,22.560063;114.207141,22.559953;114.207116,22.559871;114.207051,22.559732;114.207001,22.559628;114.206942,22.559507;114.206865,22.559404;114.20676,22.559265;114.206632,22.559091;114.206466,22.558856;114.206313,22.558653;114.206225,22.558534;114.206185,22.558482;114.206066,22.558385;114.205817,22.558181;114.20558,22.557978;114.205377,22.557815;114.205312,22.557753;114.205149,22.557572;114.204992,22.557407;114.204927,22.557347;114.204789,22.557201;114.204688,22.55708;114.20452,22.556892;114.204358,22.556698;114.204279,22.556606;114.204226,22.556558;114.204161,22.556523;114.203951,22.556407;114.203665,22.55627;114.203537,22.5562;114.203441,22.556149;114.203402,22.556119;114.203367,22.556053;114.20329,22.55595;114.203231,22.555863;114.203207,22.555813;114.203183,22.555711;114.203145,22.555571;114.203136,22.555519;114.203147,22.555413;114.203177,22.55531;114.202883,22.5539;114.202754,22.553899;114.202521,22.55398;114.202209,22.554141;114.201941,22.554291;114.201733,22.55435;114.201586,22.554361;114.201456,22.554324;114.201352,22.554255;114.201248,22.554108;114.200893,22.553498;114.200711,22.553288;114.200521,22.553139;114.200295,22.553028;114.20007,22.55294;114.199386,22.552822;114.198875,22.552796;114.198494,22.552816;114.197897,22.552928;114.197447,22.55299;114.19723,22.553007;114.197048,22.552973;114.196823,22.552884;114.196277,22.552449;114.195706,22.551958;114.195507,22.551813;114.195212,22.551704;114.194745,22.551606;114.194537,22.551586;114.194329,22.551604;114.194139,22.551643;114.194009,22.551722;114.193767,22.551926;114.193368,22.552337;114.193109,22.552618;114.19297,22.552681;114.192814,22.552705;114.192641,22.552692;114.192468,22.552625;114.192252,22.5524;114.191966,22.552108;114.191836,22.552016;114.191715,22.551971;114.191585,22.551952;114.191438,22.551946;114.191152,22.551985;114.189139,22.552416;114.188649,22.552449;114.187848,22.552506;114.186797,22.552674;114.186595,22.552588;114.186408,22.552367;114.186202,22.552013;114.186112,22.551754;114.18613,22.551447;114.185995,22.551331;114.185918,22.551318;114.185666,22.551454;114.185301,22.551711;114.184492,22.552141;114.18271,22.552801;114.182626,22.552918;114.182754,22.553378;114.182578,22.554804;114.182573,22.555331;114.182426,22.556155;114.18232,22.556777;114.182161,22.556946;114.180945,22.557268;114.180688,22.557212;114.180412,22.557245;114.179739,22.557245;114.179168,22.557044;114.178236,22.556842;114.17726,22.556905;114.175509,22.556898;114.175138,22.557122;114.174783,22.557436;114.174439,22.55805;114.174222,22.558222;114.173964,22.558376;114.173687,22.558451;114.173305,22.558488;114.1728,22.558514;114.172317,22.558465;114.171984,22.55826;114.17158,22.557871;114.170993,22.557148;114.170581,22.556718;114.170035,22.556441;114.169522,22.55634;114.168954,22.556373;114.168534,22.556422;114.16819,22.556575;114.168033,22.557009;114.167872,22.557163;114.167412,22.55827;114.167094,22.558775;114.166675,22.559093;114.166436,22.559157;114.166078,22.559117;114.165592,22.558891;114.164436,22.557572;114.164003,22.556773;114.16342,22.556178;114.162237,22.554049;114.161077,22.552626;114.160765,22.552309;114.160592,22.552203;114.160445,22.552134;114.160176,22.552056;114.159925,22.552031;114.158349,22.552083;114.157674,22.552074;114.15738,22.552016;114.157155,22.551944;114.157008,22.551819;114.156877,22.551621;114.156774,22.551233;114.156739,22.550866;114.156782,22.54982;114.156774,22.549423;114.156722,22.548961;114.156653,22.548735;114.156583,22.548597;114.156401,22.548399;114.156185,22.548241;114.15602,22.548146;114.155787,22.548121;114.155466,22.548121;114.155293,22.548108;114.155154,22.548056;114.155076,22.548007;114.154999,22.547857;114.154895,22.547545;114.154817,22.5471;114.154747,22.54662;114.154652,22.546297;114.154618,22.546112;114.154609,22.545928;114.154643,22.545405;114.154704,22.544741;114.154764,22.544567;114.154834,22.544469;114.154972,22.544406;114.155345,22.544295;114.155829,22.544214;114.156046,22.544248;114.156098,22.544294;114.156089,22.544391;114.155951,22.544676;114.15583,22.544969;114.155856,22.545138;114.155959,22.545275;114.156167,22.545326;114.156418,22.545298;114.156617,22.545182;114.156721,22.544985;114.156773,22.544477;114.156721,22.543976;114.156661,22.543813;114.156505,22.543694;114.156029,22.543601;114.155535,22.543479;114.155301,22.543331;114.154712,22.542658;114.153751,22.541618;114.153474,22.541305;114.15331,22.540932;114.153223,22.540692;114.153206,22.540501;114.153257,22.540199;114.153483,22.539684;114.153543,22.539549;114.153526,22.539406;114.153491,22.539294;114.153387,22.539217;114.153136,22.539114;114.152089,22.538875;114.151093,22.538672;114.150495,22.538521;114.150131,22.538483;114.149889,22.538487;114.149733,22.538509;114.149647,22.538571;114.149595,22.538668;114.149482,22.538983;114.149387,22.539159;114.149257,22.539268;114.149162,22.539301;114.148893,22.53929;114.148642,22.539273;114.148452,22.539284;114.148183,22.539354;114.148044,22.539385;114.147897,22.539402;114.147768,22.539403;114.147612,22.539386;114.147421,22.539338;114.147274,22.539308;114.147118,22.539319;114.147023,22.539367;114.146936,22.539439;114.14685,22.539543;114.146711,22.539734;114.146676,22.539784;114.146529,22.539941;114.146399,22.540034;114.146252,22.540084;114.146036,22.5401;114.145741,22.540098;114.145455,22.540079;114.145169,22.540116;114.14491,22.540171;114.144373,22.540423;114.143888,22.540628;114.143489,22.540729;114.143022,22.540777;114.142511,22.540736;114.14206,22.540594;114.141627,22.540341;114.141012,22.539884;114.140241,22.53924;114.139808,22.538958;114.139401,22.538809;114.138908,22.538751;114.138353,22.538763;114.138084,22.538828;114.137461,22.538998;114.136759,22.539158;114.136335,22.539189;114.135893,22.539159;114.135503,22.539071;114.135104,22.538847;114.134698,22.538373;114.134221,22.537748;114.13377,22.537351;114.13338,22.537102;114.133025,22.536975;114.132661,22.536895;114.132326,22.53691;114.13222,22.536914;114.132064,22.536921;114.131492,22.537042;114.131059,22.537111;114.13079,22.537081;114.130478,22.537002;114.128736,22.536122;114.128095,22.535754;114.127567,22.535368;114.127124,22.534913;114.126587,22.534249;114.126206,22.533718;114.125616,22.532776;114.125357,22.532438;114.125062,22.532211;114.124698,22.532072;114.124169,22.531944;114.122549,22.531614;114.122072,22.531494;114.121725,22.531306;114.1215,22.531067;114.121326,22.530651;114.121257,22.530145;114.121214,22.529679;114.121006,22.529141;114.120962,22.529054;114.120694,22.528637;114.120494,22.528418;114.120226,22.528232;114.119567,22.527885;114.118752,22.527477;114.11818,22.52722;114.117608,22.526977;114.117274,22.526936;114.116713,22.527048;114.115635,22.52732;114.115032,22.52772;114.114737,22.528107;114.114591,22.528608;114.114601,22.529181;114.114649,22.530064;114.114768,22.531119;114.114823,22.532189;114.114842,22.532803;114.11463,22.533483;114.114268,22.533793;114.113769,22.533842;114.113372,22.53358;114.113054,22.532564;114.112716,22.532019;114.112211,22.531685;114.111554,22.531592;114.110922,22.531717;114.109584,22.532263;114.108715,22.532395;114.107912,22.532324;114.107577,22.532253;114.106988,22.532069;114.105943,22.531799;114.105177,22.531626',\n",
       "   'center': '114.123885,22.555341',\n",
       "   'level': 'district',\n",
       "   'districts': [{'citycode': '0755',\n",
       "     'adcode': '440303',\n",
       "     'name': '笋岗街道',\n",
       "     'center': '114.104,22.5621',\n",
       "     'level': 'street',\n",
       "     'districts': []},\n",
       "    {'citycode': '0755',\n",
       "     'adcode': '440303',\n",
       "     'name': '东门街道',\n",
       "     'center': '114.116,22.5428',\n",
       "     'level': 'street',\n",
       "     'districts': []},\n",
       "    {'citycode': '0755',\n",
       "     'adcode': '440303',\n",
       "     'name': '黄贝街道',\n",
       "     'center': '114.157,22.5662',\n",
       "     'level': 'street',\n",
       "     'districts': []},\n",
       "    {'citycode': '0755',\n",
       "     'adcode': '440303',\n",
       "     'name': '桂园街道',\n",
       "     'center': '114.109,22.556',\n",
       "     'level': 'street',\n",
       "     'districts': []},\n",
       "    {'citycode': '0755',\n",
       "     'adcode': '440303',\n",
       "     'name': '清水河街道',\n",
       "     'center': '114.082,22.5699',\n",
       "     'level': 'street',\n",
       "     'districts': []},\n",
       "    {'citycode': '0755',\n",
       "     'adcode': '440303',\n",
       "     'name': '南湖街道',\n",
       "     'center': '114.113,22.5389',\n",
       "     'level': 'street',\n",
       "     'districts': []},\n",
       "    {'citycode': '0755',\n",
       "     'adcode': '440303',\n",
       "     'name': '东晓街道',\n",
       "     'center': '114.123,22.589',\n",
       "     'level': 'street',\n",
       "     'districts': []},\n",
       "    {'citycode': '0755',\n",
       "     'adcode': '440303',\n",
       "     'name': '翠竹街道',\n",
       "     'center': '114.128,22.574',\n",
       "     'level': 'street',\n",
       "     'districts': []},\n",
       "    {'citycode': '0755',\n",
       "     'adcode': '440303',\n",
       "     'name': '东湖街道',\n",
       "     'center': '114.204,22.5699',\n",
       "     'level': 'street',\n",
       "     'districts': []},\n",
       "    {'citycode': '0755',\n",
       "     'adcode': '440303',\n",
       "     'name': '莲塘街道',\n",
       "     'center': '114.205,22.565',\n",
       "     'level': 'street',\n",
       "     'districts': []}]}]}"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#数据中保存了polyline的线形\n",
    "result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 行政区划边界线型数据提取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-11T10:07:06.479605Z",
     "start_time": "2019-09-11T10:07:06.355734Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>lon_lst</th>\n",
       "      <th>lat_lst</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>114.105177</td>\n",
       "      <td>22.531626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>114.104808</td>\n",
       "      <td>22.532512</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>114.104774</td>\n",
       "      <td>22.535038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>114.104757</td>\n",
       "      <td>22.535105</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>114.104772</td>\n",
       "      <td>22.535200</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      lon_lst    lat_lst\n",
       "0  114.105177  22.531626\n",
       "1  114.104808  22.532512\n",
       "2  114.104774  22.535038\n",
       "3  114.104757  22.535105\n",
       "4  114.104772  22.535200"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#将polyline的线型从result中提取\n",
    "polyline = result['districts'][0]['polyline']\n",
    "\n",
    "###############################你需要在下面写代码##################################\n",
    "#想办法把polyline变成一个dataframe，两列，第一列是lon，第二列是lat\n",
    "#提示：可以用for循环遍历\n",
    "#或者可以用re包，一次指定多个分隔符分割字符串，然后用numpy的reshape方法，再变成dataframe\n",
    "\n",
    "\n",
    "###################################################################################\n",
    "\n",
    "polyline.head(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 火星坐标转换"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从高德抓下来的坐标系是GCJ02,俗称<a href=\"https://blog.csdn.net/huangli0/article/details/81840937\">火星坐标系统</a>，而我们平时用的是WGS84坐标系，因此，需要进行坐标转换，转换的方法有大神开源出来了\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[geo_convert](https://github.com/gaussic/geo_convert)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "好的，我们这里对每一行应用一下这个算法转换，建议使用geopandas的apply函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-11T10:11:06.230683Z",
     "start_time": "2019-09-11T10:11:06.179076Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>lon_lst</th>\n",
       "      <th>lat_lst</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>114.100060</td>\n",
       "      <td>22.534309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>114.099691</td>\n",
       "      <td>22.535195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>114.099657</td>\n",
       "      <td>22.537721</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>114.099640</td>\n",
       "      <td>22.537788</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>114.099655</td>\n",
       "      <td>22.537883</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      lon_lst    lat_lst\n",
       "0  114.100060  22.534309\n",
       "1  114.099691  22.535195\n",
       "2  114.099657  22.537721\n",
       "3  114.099640  22.537788\n",
       "4  114.099655  22.537883"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "###############################你需要在下面写代码##################################\n",
    "#坐标转换\n",
    "\n",
    "###################################################################################\n",
    "polyline.head(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 用线型生成geodataframe"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这个~前面教程有哦，写一写巩固一下"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这里你要做的操作，就是将polyline变成shapely里面的Polygon，然后再转换为geodataframe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-09-11T10:12:00.167002Z",
     "start_time": "2019-09-11T10:11:58.202594Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f5ee804cd30>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "import geopandas\n",
    "from shapely.geometry import Point,Polygon,shape\n",
    "\n",
    "\n",
    "###############################你需要在下面写代码##################################\n",
    "#线型生成geodataframe\n",
    "#提示Polygon(polyline.values)\n",
    "###################################################################################\n",
    "dataline.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 作业"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 抓全深圳的行政区划"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以把上面的抓取过程写成一个函数，输入是行政区划的名字，输出是坐标点或shapely的polygon或geodataframe\n",
    "\n",
    "这样只要循环一下，就可以生成全深圳的行政区划了"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "然后不要忘了把geopandas保存成shp"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "特别注意：在一个行政区划由多个面组成时，坐标串中间以'|'分隔"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "409.091px",
    "left": "141px",
    "top": "214.322px",
    "width": "179px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
